<?php

namespace App\Http\Util;


/*
 * 助手类
 */


use App\Models\Share\Material;

class OMUtil
{


    public static function getPostParam($name)
    {
        $result = $_POST[$name];

        if ($result == null) {
            $paramsStr = file_get_contents('php://input');
            $paramsArr = json_decode($paramsStr, true);
            $result = $paramsArr[$name];
        }
        return $result;
    }


    /*
     * 消息合成函数 @param code 返回的code @array 需要加入返回Json的数据 @return Json json格式的返回数据
     */
    public static function returnJson($code, $array = null, $message = '')
    {
        $returnArr ['code'] = $code;
        if (!empty($message)) {
            $returnArr ['msg'] = $message;
        } else {
            $returnArr ['msg'] = OMConstant::$_jsonMessage [$code];
        }
        if (!is_null($array)) {
            $returnArr = array_merge($returnArr, ['data' => $array]);
        }

        return \response()->json($returnArr, 200, [], JSON_UNESCAPED_UNICODE);
    }

    /*
     * 消息合成函数 @param code 返回的code @array 需要加入返回Json的数据 @return Json json格式的返回数据
     */
    public static function returnJsonNoData($code, $array = null, $message = '')
    {
        $returnArr ['code'] = $code;
        if (!empty($message)) {
            $returnArr ['msg'] = $message;
        } else {
            $returnArr ['msg'] = OMConstant::$_jsonMessage [$code];
        }
        if (!is_null($array)) {
            $returnArr = array_merge($returnArr, ['data' => $array]);
        }

        return \response()->json($returnArr, 200, [], JSON_UNESCAPED_UNICODE);
    }

    /*
     * 获取当前时间
     */
    public static function getTime()
    {
        return date('Y-m-d H:i:s');
    }

    /*
     * 获取当前日期
     */
    public static function getDate()
    {
        return date('Y-m-d');
    }

    /*
     * 获取x-token 后台登录后用来记录身份的
     */
    public static function getXToken()
    {
        $tokenStr = env('APP_KEY') . time() . mt_rand(10000, 99999);
        return sha1($tokenStr);
    }

    /*
     * 获取一个文件名
     * @param
     */
    public static function getFileName($type = '')
    {
        $name = md5(time() . mt_rand(1, 99999)) . '.' . $type;
        return $name;
    }


    /*
     * 获到url中的文件名
     * @param
     *    $url
     */
    public static function getUrlName($url)
    {
        $tempArr = explode('/', $url);
        $index = count($tempArr) - 1;
        return $tempArr[$index];
    }


    /*
    * 处理desc，把标签里面的name和pic去掉
    *
    */

    public static function handleDesc($desc)
    {
        foreach ($desc as $key => $value) {
            $desc[$key] = json_decode($value, true);
        }
        //先把id放到列表里面

        foreach ($desc as $key => $value) {
            $idList = [];
            foreach ($value['value'] as $idArr) {
                array_push($idList, $idArr['id']);
            }
            $desc[$key]['value'] = $idList;
        }
        return json_encode($desc);
    }

    /**
     * 处理curl发送参数的格式化
     *
     * @param array $array 要处理的参数键值对数组
     * @param string $connetChar 分割符号
     * @return string $result
     */
    public static function handleParameter($array, $connetChar = '&')
    {
        $result = "";
        $i = 0;
        foreach ($array as $key => $value) {
            $value = str_replace($connetChar, "", $value);
            if ($i == 0) {
                $result = $result . $key . "=" . $value;
            } else {
                $result = $result . $connetChar . $key . "=" . $value;
            }
            $i++;
        }
        return $result;
    }

    /**
     * list_sort_by()对查询结果集进行排序
     * @param array $list 查询结果
     * @param string $field 排序的字段名
     * @param array $sortby 排序类型
     * asc正向排序 desc逆向排序 nat自然排序
     * @return array
     */
    public static function list_sort_by($list, $field, $sortby = 'asc')
    {
        if (is_array($list)) {
            $refer = $resultSet = array();
            //print_R($list);die;
            foreach ($list as $i => $data)
                //($data);die;
                $refer[$i] = &$data[$field];
            //print_R($refer[$i]);die;
            switch ($sortby) {
                case 'asc': // 正向排序
                    asort($refer);
                    break;
                case 'desc':// 逆向排序
                    arsort($refer);
                    break;
                case 'nat': // 自然排序
                    natcasesort($refer);
                    break;
            }
            //print_R($refer);die;
            foreach ($refer as $key => $val)
                //print_R($list[$key]);die;
                $resultSet[] = &$list[$key];
            return $resultSet;
        }
        return false;
    }

    /*
     * 读取excel的数据
     */
    public static function getExcelData($filePath)
    {
        $returnArr = [];
        //第一遍循环拼接省份
        $file = fopen($filePath, 'r');
        while ($data = fgetcsv($file)) { //每次读取CSV里面的一行内容
            if (empty($data[0])) {
                break;
            }
            //gbk转utf-8
            foreach ($data as $key => $value) {
                $data[$key] = iconv("GBK", "UTF-8", $value);
            }
            $returnArr[] = $data;
        }
        fclose($file);
        return $returnArr;
    }

    /*
     * 数组去空格
     */
    public static function trimArray(&$array)
    {
        if (is_array($array)) {
            foreach ($array as $key => $value) {
                if (is_array($value)) {
                    self::trimArray($array[$key]);
                } else {
                    $array[$key] = trim($value);
                }
            }
        }
    }


}
